<?php

class SpecialtyModel extends CI_Model{

    function __construct()
    {
        parent::__construct();
        $this->table_specialty = 'especialidad';
        $this->table_specialty_clinic = 'especialidad_centro_salud';
    }
    
    //Obtener la información de una especialidad dentro de un Centro de Salud
    function getSpecialties(){     
        $this->db->select($this->table_specialty.'.ID_ESPECIALIDAD, '.
                $this->table_specialty.'.nombre_especialidad, '.
                $this->table_specialty_clinic.'.minutos_cita, '.
                $this->table_specialty_clinic.'.adicionales_dia, '.
                $this->table_specialty_clinic.'.activo');
        $this->db->from($this->table_specialty);
        $this->db->join($this->table_specialty_clinic, $this->table_specialty.".ID_ESPECIALIDAD =".$this->table_specialty_clinic.".ID_ESPECIALIDAD");
        $this->db->where($this->table_specialty_clinic.'.ID_CENTRO_SALUD', CENTRO_SALUD);
        $this->db->order_by($this->table_specialty.'.nombre_especialidad');
        $query = $this->db->get(); 
        return $query->result();    
    }
     
    //Obtener las especialidad que no forman parte del Centro de Salud
    function getSpecialtiesNotInClinic(){
        $specialtiesIds = array();
        $specialties = $this->getSpecialties();
        foreach ($specialties as $sp) {
            $specialtiesIds[] = $sp->ID_ESPECIALIDAD;
        }
        $this->db->select($this->table_specialty.'.ID_ESPECIALIDAD, '.
           $this->table_specialty.'.nombre_especialidad');
        $this->db->from($this->table_specialty);
        $this->db->where_not_in('ID_ESPECIALIDAD', $specialtiesIds);
        $query = $this->db->get();  
        return $query->result();
    }
    
    //Obtener la información de una especialidad dentro de un Centro de Salud mediante su "nombre"
    function getSpecialtyInfoByName($specialtyName){
        $this->db->select($this->table_specialty.'.ID_ESPECIALIDAD, '.
                $this->table_specialty.'.nombre_especialidad, '.
                $this->table_specialty_clinic.'.minutos_cita, '.
                $this->table_specialty_clinic.'.adicionales_dia, '.
                $this->table_specialty_clinic.'.activo');
        $this->db->from($this->table_specialty);
        $this->db->join($this->table_specialty_clinic, $this->table_specialty.".ID_ESPECIALIDAD =".$this->table_specialty_clinic.".ID_ESPECIALIDAD");
        if($specialtyName != null){
            $this->db->like($this->table_specialty.'.nombre_especialidad',$specialtyName);
        }
        $this->db->where($this->table_specialty_clinic.'.ID_CENTRO_SALUD', CENTRO_SALUD);
        $this->db->order_by($this->table_specialty.'.nombre_especialidad');
        $query = $this->db->get();
        return $query->result();  
    }
    
    //Obtener la información de una especialidad dentro de un Centro de Salud mediante su "Id"
    function getSpecialtyInfoById($specialtyId){
        $this->db->select($this->table_specialty_clinic.'.ID_ESPECIALIDAD, '.
                $this->table_specialty.'.nombre_especialidad, '.
                $this->table_specialty_clinic.'.minutos_cita, '.
                $this->table_specialty_clinic.'.adicionales_dia');
        $this->db->from($this->table_specialty);
        $this->db->join($this->table_specialty_clinic, $this->table_specialty.".ID_ESPECIALIDAD =".$this->table_specialty_clinic.".ID_ESPECIALIDAD");
        $this->db->where($this->table_specialty_clinic.'.ID_ESPECIALIDAD', $specialtyId);
        $this->db->where($this->table_specialty_clinic.'.ID_CENTRO_SALUD', CENTRO_SALUD);
        $query = $this->db->get();
        return $query->row_array(); 
    }
    
    function getSpecialtyNameById($specialtyId){
        $this->db->select("nombre_especialidad");
        $this->db->from("especialidad");
        $this->db->where("especialidad.ID_ESPECIALIDAD = '$specialtyId'");
        $query = $this->db->get();
        $specialty = $query->result();
        return $specialty;
    }
    
    //Agregar una nueva especialidad al Centro de Salud
    function addSpecialty($data){
        $this->db->insert($this->table_specialty_clinic, $data);
    }
    
    //Actualizar la información de la especialidad en un Centro de Salud
    function updateSpecialtyInfo($data, $specialtyId){
        $this->db->where($this->table_specialty_clinic.'.ID_ESPECIALIDAD', $specialtyId);
        $this->db->where($this->table_specialty_clinic.'.ID_CENTRO_SALUD', CENTRO_SALUD);
        $this->db->update($this->table_specialty_clinic, $data);
    }
    
    //Desahbilitar la especialidad de un Centro de Salud
    function deactivateSpecialty($specialtyId){
        $data = array( 'activo' =>  0);
        $this->db->where($this->table_specialty_clinic.'.ID_ESPECIALIDAD', $specialtyId);
        $this->db->where($this->table_specialty_clinic.'.ID_CENTRO_SALUD', CENTRO_SALUD);
        $this->db->update($this->table_specialty_clinic, $data);       
    }
    
    //Habilitar la especialidad de un Centro de Salud
    function activateSpecialty($specialtyId){
        $data = array( 'activo' =>  1);
        $this->db->where($this->table_specialty_clinic.'.ID_ESPECIALIDAD', $specialtyId);
        $this->db->where($this->table_specialty_clinic.'.ID_CENTRO_SALUD', CENTRO_SALUD);
        $this->db->update($this->table_specialty_clinic, $data);       
    }
    
}
?>